package com.woniu.cms.goods.core.controller;


import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.woniu.cms.goods.core.entity.GoodsBalanceMaterial;
import com.woniu.cms.goods.core.service.IGoodsBalanceService;
import com.woniu.cms.goods.core.util.ExcelUtils;
import com.woniu.common.api.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 阅读材料平衡信息报表 前端控制器
 * </p>
 *
 * @author romantic sheep
 * @since 2022-09-19
 */
@RestController
@Api(tags = "材料平衡分析模块")
@RequestMapping("/goods-balance")
public class GoodsBalanceController {

    @Autowired
    private IGoodsBalanceService iGoodsBalanceService;

    /*
    *供材料中心、项目经理对项目使用的材料进行分析，以提供项目使用材料的总体情况做参考。
    * @projectCode,项目编号
    * @materialType,材料供应类型（0-甲供，1-乙供）
    * */
    @GetMapping("count")
    @ApiOperation("查询/统计")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "projectCode",value = "项目编号"),
            @ApiImplicitParam(name = "materialType",value = "材料供应类型（0-甲供，1-乙供）")
    })
    public Result countGoods(String projectCode,Integer materialType){
        List<GoodsBalanceMaterial> list=iGoodsBalanceService.countGoods(projectCode,materialType);
        Map map=new HashMap();
        map.put("data",list);
        return Result.common(map);
    }
    /*
    * 材料平衡分析表excel导出。
    *
    * */
    @Transactional
    @ApiOperation("导出excel")
    @GetMapping("excel")
    public void export(HttpServletResponse response,String projectCode,Integer materialType) throws IOException {
        List<GoodsBalanceMaterial> list=iGoodsBalanceService.countGoods(projectCode,materialType);
        //导出设置参数
        ExportParams exportParams = new ExportParams();
        // 设置导出的标题
        exportParams.setTitle("材料平衡分析表");
        //调用工具类的导出方法
        ExcelUtils.exportExcel(
                list,            // 导出的数据
                GoodsBalanceMaterial.class,  // 导出的java类
                "材料平衡分析表",          // 导出的文件名称stu 后缀xlxs会自动在后面拼接
                exportParams,   // 导出设置参数
                response        // 导出的  处理流
        );
    }
}

